def get_sum (num):
    sum = 0
    for i in range(1,num+1):
        sum+=i
    print(f"{num}求和 为{sum}")

get_sum(10)
get_sum(100)

#位置传参
def birthday(name,age):
    print(name+"生日快乐！")
    print(str(age)+"岁生日快乐")
birthday("黄小主",19)
print("-"*50)
#关键字传参
birthday(name="黄小主",age=19)
print("-"*50)
#位置传参+关键字传参，在遵循位置传参在前，关键字传参在后
birthday("黄小主",age=19)#如果不是位置在前面，关键字在后面的话，会报错
print("-"*50)
#默认值传参
def fun (name=1,age=10):
    print(name,age)
fun() #这个地方可以直接传进空参，直接使用默认值
fun(2,age=10) #可以位置参数和关键字参数一起使用，位置在前面

#这里可以位置参数和默认值参数一起使用，但是默认值必须在后面，不然会报错（语法错误）
def fun2(name,age=10):
    print(name,age)
    print("-" * 50)

#可变参数
'''
可变位置参数
1.会把传进来的参数变成一个元组存放
2.也可以传进来一个列表，但是列表会被当作一个参数放进元组
3.若想将列表进行解包存放，传进来的时候在列表前加一个*号，进行解包
'''
def fun3(*num):
    print(type(num))
    print(num)
fun3(1,2)
fun3([1,2,3])
fun3(*[1,2,3,4,]) #这里会进行解包
print("-" * 50)
'''
可变关键字传参
会将传进来的参数转成一个字典
在传进来的时候我们将要使用关键字传参，变量为字典中的key，值为字典中的值
如果先定义一个字典，再将字典传进来会报错，因为这就会变成位置传参，
需要在字典前加两个**进行解包
'''
def fun_dictionary(**num):
    print(type(num))
    print(num)
fun_dictionary(name="黄小主",age=18,height=155)
dic=dict(name="黄小主",age=18,height=155)
fun_dictionary(**dic) #这里需要解包
print("-" * 50)

#函数的返回值
def fun_count(num1,num2):
    sun=num1+num2
    return sun
get_sum=fun_count(1,2)
print(get_sum)
#可以连续调用两次，第二次包含第一次的结果
get_sum2=fun_count(fun_count(1,2),3)
print(get_sum2)
print("-" * 50)

#多个返回值
def fun_DifftCount(num):
    s=0#累加和
    s2=0#奇数和
    s3=0#偶数和
    for i in range(1,num+1):
        if i%2!=0:#偶数
            s3+=i
        else:
            s2+=i
        s=s+i
    return s,s2,s3

result=fun_DifftCount(10)
print(type(result))
print(result)
print("-" * 50)
#返回值解包赋值
a,b,c=fun_DifftCount(10)
print(a)
print(b)
print(c)
print("-" * 50)

#局部变量与全局变量
all=100
def changenum(x,y):
    sum=x+y+all #全局变量可以在函数中使用
    return sum
print(changenum(10,20))
print("-" * 50)
def changenum2(x,y):
    global special #这里的定义不能直接在定义这里赋值
    special= 200
    sum=x+y+special
    return sum
print(changenum2(10,20))
print(special) #这里在函数中用global修饰了所以是全局变量
print("-" * 50)